
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __gnu_xml_validation_relaxng_FullSyntaxBuilder__
#define __gnu_xml_validation_relaxng_FullSyntaxBuilder__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace validation
      {
        namespace relaxng
        {
            class AnyNameNameClass;
            class AttributePattern;
            class ChoiceNameClass;
            class ChoicePattern;
            class DataPattern;
            class Define;
            class ElementPattern;
            class EmptyPattern;
            class FullSyntaxBuilder;
            class Grammar;
            class GroupPattern;
            class InterleavePattern;
            class ListPattern;
            class NSNameNameClass;
            class NameClass;
            class NameNameClass;
            class NotAllowedPattern;
            class OneOrMorePattern;
            class Param;
            class Pattern;
            class RefPattern;
            class TextPattern;
            class ValuePattern;
        }
      }
    }
  }
  namespace org
  {
    namespace relaxng
    {
      namespace datatype
      {
          class DatatypeLibrary;
      }
    }
    namespace w3c
    {
      namespace dom
      {
          class Document;
          class Element;
          class Node;
      }
    }
  }
}

class gnu::xml::validation::relaxng::FullSyntaxBuilder : public ::java::lang::Object
{

public: // actually package-private
  FullSyntaxBuilder();
  virtual ::gnu::xml::validation::relaxng::Grammar * parse(::org::w3c::dom::Document *);
private:
  void getDefines(::java::util::Set *, ::org::w3c::dom::Element *, ::org::w3c::dom::Element *, jboolean);
  void getElements(::java::util::Set *, ::org::w3c::dom::Element *, ::org::w3c::dom::Element *);
  void expandRefs(::java::util::Set *, ::org::w3c::dom::Element *);
  void forbidRefs(::org::w3c::dom::Element *, ::java::lang::String *);
  void transform(::org::w3c::dom::Node *);
  void transformGrammar(::org::w3c::dom::Node *, ::org::w3c::dom::Node *);
  void handleRefs(::org::w3c::dom::Node *, ::org::w3c::dom::Node *, ::org::w3c::dom::Node *);
  ::java::lang::String * createRefName();
  void transform2(::org::w3c::dom::Node *);
  static jboolean isWhitespace(::java::lang::String *);
  static ::java::lang::String * escapeURL(::java::lang::String *);
  static ::org::w3c::dom::Element * resolve(::java::lang::String *);
  ::java::util::List * getComponents(::org::w3c::dom::Node *);
  static void transformToOneChildElement(::org::w3c::dom::Node *, ::java::lang::String *);
  static ::org::w3c::dom::Element * getFirstChildElement(::org::w3c::dom::Node *);
  static ::org::w3c::dom::Element * getNextSiblingElement(::org::w3c::dom::Node *);
  static void forbidDescendants(::org::w3c::dom::Node *, ::java::util::Set *);
  static jboolean isDescendantOfFirstChildOfAttribute(::org::w3c::dom::Node *);
  static void combineNodes(::org::w3c::dom::Node *, ::java::lang::String *, ::java::lang::String *, ::java::util::List *);
public: // actually package-private
  virtual ::gnu::xml::validation::relaxng::Grammar * parseGrammar(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::Define * parseDefine(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::Pattern * parseTop(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::Pattern * parsePattern(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::Pattern * parseNonEmptyPattern(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::ElementPattern * parseElement(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::NotAllowedPattern * parseNotAllowed(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::EmptyPattern * parseEmpty(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::TextPattern * parseText(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::DataPattern * parseData(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::Param * parseParam(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::ValuePattern * parseValue(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::ListPattern * parseList(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::AttributePattern * parseAttribute(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::RefPattern * parseRef(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::OneOrMorePattern * parseOneOrMore(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::ChoicePattern * parseChoice(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::GroupPattern * parseGroup(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::InterleavePattern * parseInterleave(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::NameClass * parseNameClass(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::AnyNameNameClass * parseAnyName(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::NameNameClass * parseName(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::NSNameNameClass * parseNsName(::org::w3c::dom::Element *);
  virtual ::gnu::xml::validation::relaxng::ChoiceNameClass * parseChoiceNameClass(::org::w3c::dom::Element *);
  virtual void checkName(::org::w3c::dom::Element *, ::java::lang::String *);
  virtual ::org::relaxng::datatype::DatatypeLibrary * getDatatypeLibrary(::java::lang::String *);
  static ::java::util::Map * VOCABULARY;
  static ::java::util::Set * STRIPPED_ATTRIBUTES;
  static ::java::util::Set * PATTERN_ELEMENTS;
private:
  ::java::util::Set * __attribute__((aligned(__alignof__( ::java::lang::Object)))) urls;
  jint refCount;
  ::java::util::Map * datatypeLibraries;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_validation_relaxng_FullSyntaxBuilder__
